#ifndef __LINKLIST_H_
#define __LINKLIST_H_


#include <iostream>
#include "DynamicArray1.h"
class LinkList

{
public:
    using ElementType = int;
    LinkList();
    ~LinkList();

    //插入
    void InsertTail(const ElementType& element);//尾插
    void InsertHead(const ElementType& element);//头插
    void InsertByIndex(int index,const ElementType &element); //中间插入

    //删除
    void RemoveByIndex(int index); //按位置删除
    void RemoveByElement(const ElementType& element); //按值删除

    //查找
    ElementType* FindByIndex(int index);//按位置查找
    DynamicArray FindByElement(const ElementType& element);//按值查找
    
    //逆序
    void Reserve();//链表逆序:非递归
    void Reserve2();//递归逆序


    //排序
    void BubbleSort();//冒泡排序
    void Sort(); //快速排序

    // 显示
    void show();


private:
    struct Node //链表的结点
    {
        Node(const ElementType& data):data(data),next(nullptr){}
        ElementType data; // 数据域
        Node *next; //指针域
    };
    void FastSort(Node *start,Node* end);
    Node* Reserve2(Node* node);
    Node *head;
    int size; //元素个数
};







#endif 